/*
 * Copyright (c) 2012 SUBSECRETARIA DEFENSORIA DEL ESPACIO PUBLICO - SDEP.
 * All Rights Reserved.
 * This software is the confidential and proprietary information of SDEP
 * Developed By CONSTULT-SOFT S.A, Development Team 2012.
 *
 */
package co.gov.medellin.sdep.sisdep.domain.gestion;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;

import co.gov.medellin.sdep.sisdep.common.AppConstants;
import co.gov.medellin.sdep.sisdep.common.OracleHelper;
import co.gov.medellin.sdep.sisdep.domain.MessageModalWindowController;
import co.gov.medellin.sdep.sisdep.domain.SolicitudBaseController;
import co.gov.medellin.sdep.sisdep.gestion.dto.VisitaAdministrativaDTO;
import co.gov.medellin.sdep.sisdep.gestion.exception.ArticuloException;
import co.gov.medellin.sdep.sisdep.gestion.exception.SolicitudException;
import co.gov.medellin.sdep.sisdep.gestion.exception.VisitaAdministrativaException;
import co.gov.medellin.sdep.sisdep.gestion.exception.VisitaAdministrativaRuntimeException;
import co.gov.medellin.sdep.sisdep.gestion.service.IArticuloService;
import co.gov.medellin.sdep.sisdep.gestion.service.IArticulosConsumidosService;
import co.gov.medellin.sdep.sisdep.gestion.service.IVisitaAdministrativaService;
import co.gov.medellin.sdep.sisdep.integration.mapasmedellin.BeanDireccion;
import co.gov.medellin.sdep.sisdep.integration.mapasmedellin.GeoUbicacionClient;
import co.gov.medellin.sdep.sisdep.model.Articulo;
import co.gov.medellin.sdep.sisdep.model.VisitaAdministrativa;
import co.gov.medellin.sdep.sisdep.regulacion.exception.SolicitudModificaException;

/**
 * @author Usuario
 * 
 */
public class VisitaAdministrativaController extends SolicitudBaseController implements
		Serializable {

	/**
	 * generated serial version
	 */
	private static final long serialVersionUID = -3285110767384990403L;

	/**
	 * Constructor por defecto, inicializa los elemento basicos del Controlador
	 */
	public VisitaAdministrativaController() {
		this.visitaAdministrativaListModel = new ListDataModel();
	}

	/** bean para el manejo del formulario de busqueda VisitaAdministrativa */
	private VisitaAdministrativa visitaAdministrativaSearch = new VisitaAdministrativa();

	/** Objeto contenedor del listado de VisitaAdministrativa luego de una consulta. */
	private transient DataModel visitaAdministrativaListModel;

	/** bean para el manejo del formulario de creacion/edicion. VisitaAdministrativa */
	private VisitaAdministrativa visitaAdministrativa = new VisitaAdministrativa();

	/** instancia de servicio visitaAdministrativaService */
	private IVisitaAdministrativaService visitaAdministrativaService;

	public ArticulosConsumidosController aCC = new ArticulosConsumidosController();
	
	/** instancia de servicio articulosConsumidosService */
	public IArticulosConsumidosService articulosConsumidosService;
	
	/** DTO usado para transportar los campos que se usaran en el reporte. */
	private VisitaAdministrativaDTO visitaAdministrativaDTO;
	
	/** Coleccion que contiene un unico elemento y que sera usada en la construccion del archivo PDF. */
	private Collection reportCollection = new ArrayList();
	
	/** Cliente para el manejo en la verificacion de la direccion de la visita */	
	private GeoUbicacionClient geoUbicacionClient;

	/** instancia un objeto de direccion local, en caso que el usuario no valide direccion al menos una vez */
	private BeanDireccion direccionLocal = new BeanDireccion();
	
	/** instancia de servicio articuloService */
	private IArticuloService articuloService;
	
	/** listado de items para cargar el combo de articulos */
	private List articuloSelectItems = new ArrayList();

	// --------------------------------------------------------------------
	// --- metodos para atender acciones init()
	// --------------------------------------------------------------------

	/**
	 * 
	 * @return String
	 * @throws SolicitudException 
	 * @throws SolicitudModificaException 
	 */
	public String initState() throws SolicitudException, VisitaAdministrativaException {
		Map params = getExternalContext().getRequestParameterMap();
		Long solicitudId = new Long((String) params.get("solicitudId"));
		String solicitudRadicado = (String) params.get("solicitudRadicado");
		this.solicitudOrigenRedirectPage = (String) params.get("solicitudOrigenRedirectPage");
		this.solicitudDestinoRedirectPage = (String) params.get("solicitudDestinoRedirectPage");
		//cleanSearchValues();
		this.solicitud = getSolicitudService().get(solicitudId.longValue());
		this.visitaAdministrativaSearch = getVisitaAdministrativaService().getVisitaAdministrativaRelatedBy(solicitudId.longValue());
		if(this.visitaAdministrativaSearch == null){
			this.visitaAdministrativa = new VisitaAdministrativa();
			this.visitaAdministrativaSearch = new VisitaAdministrativa();
			//cleanSearchValues();
			//cleanValues();
		}
		this.visitaAdministrativa.setIdSolicitud(solicitudId);
		this.visitaAdministrativa.setRadicado(solicitudRadicado);
		this.visitaAdministrativaSearch.setIdSolicitud(solicitudId);
		this.visitaAdministrativaSearch.setRadicado(solicitudRadicado);
		return solicitudOrigenRedirectPage;
	}

	/**
	 * 
	 * @return String
	 */
	public String searchVisitaAdministrativaByKey() {
		String msg = "";
		try {
			List valores = null;
			valores = getVisitaAdministrativaService().loadByRadicado(1, 10,
					this.visitaAdministrativaSearch);
			this.visitaAdministrativaListModel.setWrappedData(valores);
		} catch (Exception e) {
			msg = e.getMessage();
			e.printStackTrace(System.err);
		}
		if (this.visitaAdministrativaListModel.getWrappedData() == null) {
			msg = AppConstants.NO_RECORDS_FOUND;
		} else {
			if (((List) this.visitaAdministrativaListModel.getWrappedData()).isEmpty()) {
				msg = AppConstants.NO_RECORDS_FOUND;
			}
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage(msg, null, null);
		return AppConstants.VISITA_ADMINISTRATIVA_SEARCH_VIEW;
	}

	/**
	 * 
	 * @return
	 */
	public String create() {
		String msg = AppConstants.DEFAULT_ERROR;
		try {
			if (this.visitaAdministrativa.getId().longValue() == 0L) {
				try{visitaAdministrativa.setIdPersona(new Long(visitaAdministrativa.getIdPersonaStr()));}catch(Exception e){visitaAdministrativa.setIdPersona(new Long(0));}
				try{visitaAdministrativa.setIdTipoVisita(new Long(visitaAdministrativa.getIdTipoVisitaStr()));}catch(Exception e){visitaAdministrativa.setIdTipoVisita(new Long(0));}
				try{visitaAdministrativa.setIdTipologia(new Long(visitaAdministrativa.getIdTipologiaStr()));}catch(Exception e){visitaAdministrativa.setIdTipologia(new Long(0));}
				try{visitaAdministrativa.setIdTipoVenta(new Long(visitaAdministrativa.getIdTipoVentaStr()));}catch(Exception e){visitaAdministrativa.setIdTipoVenta(new Long(0));}
				try{visitaAdministrativa.setIdAmoblamiento(new Long(visitaAdministrativa.getIdAmoblamientoStr()));}catch(Exception e){visitaAdministrativa.setIdAmoblamiento(new Long(0));}
				try{visitaAdministrativa.setMetrosCuadradosMantenimiento(new Long(visitaAdministrativa.getMetrosCuadradosMantenimientoStr()));}catch(Exception e){visitaAdministrativa.setMetrosCuadradosMantenimiento(new Long(0));}
				getVisitaAdministrativaService().insert(this.visitaAdministrativa);
				if(visitaAdministrativa.getIdTipoVisita().intValue() == 309){
					aCC.createArticulosConsumidos();
					aCC.articulosConsumidos.setIdSolicitud(this.visitaAdministrativa.getIdSolicitud());
					if(this.visitaAdministrativa.getIdArticuloStr() != null && !this.visitaAdministrativa.getIdArticuloStr().equals("")){
						aCC.articulosConsumidos.setIdArticulo(new Long(this.visitaAdministrativa.getIdArticuloStr()));
						aCC.articulosConsumidos.setCantidad(new Long(this.visitaAdministrativa.getCantidadStr()));
						aCC.articulosConsumidos.setDetalle(this.visitaAdministrativa.getDetalle());
						aCC.create(aCC.articulosConsumidos,articulosConsumidosService);
					}
					if(this.visitaAdministrativa.getIdArticulo1Str() != null && !this.visitaAdministrativa.getIdArticulo1Str().equals("")){
						aCC.articulosConsumidos.setIdArticulo(new Long(this.visitaAdministrativa.getIdArticulo1Str()));
						aCC.articulosConsumidos.setCantidad(new Long(this.visitaAdministrativa.getCantidad1Str()));
						aCC.articulosConsumidos.setDetalle(this.visitaAdministrativa.getDetalle1());
						aCC.create(aCC.articulosConsumidos,articulosConsumidosService);
					}
					if(this.visitaAdministrativa.getIdArticulo2Str() != null && !this.visitaAdministrativa.getIdArticulo2Str().equals("")){
						aCC.articulosConsumidos.setIdArticulo(new Long(this.visitaAdministrativa.getIdArticulo2Str()));
						aCC.articulosConsumidos.setCantidad(new Long(this.visitaAdministrativa.getCantidad2Str()));
						aCC.articulosConsumidos.setDetalle(this.visitaAdministrativa.getDetalle2());
						aCC.create(aCC.articulosConsumidos,articulosConsumidosService);
					}
					if(this.visitaAdministrativa.getIdArticulo3Str() != null && !this.visitaAdministrativa.getIdArticulo3Str().equals("")){
						aCC.articulosConsumidos.setIdArticulo(new Long(this.visitaAdministrativa.getIdArticulo3Str()));
						aCC.articulosConsumidos.setCantidad(new Long(this.visitaAdministrativa.getCantidad3Str()));
						aCC.articulosConsumidos.setDetalle(this.visitaAdministrativa.getDetalle3());
						aCC.create(aCC.articulosConsumidos,articulosConsumidosService);
					}
					if(this.visitaAdministrativa.getIdArticulo4() != null && !this.visitaAdministrativa.getIdArticulo4().equals("")){
						aCC.articulosConsumidos.setIdArticulo(new Long(this.visitaAdministrativa.getIdArticulo4Str()));
						aCC.articulosConsumidos.setCantidad(new Long(this.visitaAdministrativa.getCantidad4Str()));
						aCC.articulosConsumidos.setDetalle(this.visitaAdministrativa.getDetalle4());
						aCC.create(aCC.articulosConsumidos,articulosConsumidosService);
					}
				}
				msg = AppConstants.SUCCESS_CREATE;
			}
		} catch (VisitaAdministrativaException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		} catch (VisitaAdministrativaRuntimeException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage("- Visita Administrativa " + msg, null, null);
		return AppConstants.VISITA_ADMINISTRATIVA_SEARCH_VIEW;
	}

	/**
	 * 
	 * @return
	 */
	public String update() {
		String msg = AppConstants.DEFAULT_ERROR;
		try {
			if (this.visitaAdministrativa.getId().longValue() != 0L) {
				try{visitaAdministrativa.setIdPersona(new Long(visitaAdministrativa.getIdPersonaStr()));}catch(Exception e){visitaAdministrativa.setIdPersona(new Long(0));}
				try{visitaAdministrativa.setIdTipoVisita(new Long(visitaAdministrativa.getIdTipoVisitaStr()));}catch(Exception e){visitaAdministrativa.setIdTipoVisita(new Long(0));}
				try{visitaAdministrativa.setIdTipologia(new Long(visitaAdministrativa.getIdTipologiaStr()));}catch(Exception e){visitaAdministrativa.setIdTipologia(new Long(0));}
				try{visitaAdministrativa.setIdTipoVenta(new Long(visitaAdministrativa.getIdTipoVentaStr()));}catch(Exception e){visitaAdministrativa.setIdTipoVenta(new Long(0));}
				try{visitaAdministrativa.setIdAmoblamiento(new Long(visitaAdministrativa.getIdAmoblamientoStr()));}catch(Exception e){visitaAdministrativa.setIdAmoblamiento(new Long(0));}
				try{visitaAdministrativa.setMetrosCuadradosMantenimiento(new Long(visitaAdministrativa.getMetrosCuadradosMantenimientoStr()));}catch(Exception e){visitaAdministrativa.setMetrosCuadradosMantenimiento(new Long(0));}				
				getVisitaAdministrativaService().update(this.visitaAdministrativa);
				if(visitaAdministrativa.getIdTipoVisita().intValue() == 309){					
					aCC.createArticulosConsumidos();
					aCC.articulosConsumidos.setIdSolicitud(this.visitaAdministrativa.getIdSolicitud());
					if(this.visitaAdministrativa.getIdArticuloStr() != null && !this.visitaAdministrativa.getIdArticuloStr().equals("")){
						aCC.articulosConsumidos.setId(new Long(this.visitaAdministrativa.getIdElementoStr()));
						aCC.articulosConsumidos.setIdArticulo(new Long(this.visitaAdministrativa.getIdArticuloStr()));
						aCC.articulosConsumidos.setCantidad(new Long (this.visitaAdministrativa.getCantidadStr()));
						aCC.articulosConsumidos.setDetalle(this.visitaAdministrativa.getDetalle());
						aCC.update(aCC.articulosConsumidos,articulosConsumidosService);
					}
					if(this.visitaAdministrativa.getIdArticulo1Str() != null && !this.visitaAdministrativa.getIdArticulo1Str().equals("")){
						aCC.articulosConsumidos.setId(new Long(this.visitaAdministrativa.getIdElemento1Str()));
						aCC.articulosConsumidos.setIdArticulo(new Long(this.visitaAdministrativa.getIdArticulo1Str()));
						aCC.articulosConsumidos.setCantidad(new Long(this.visitaAdministrativa.getCantidad1Str()));
						aCC.articulosConsumidos.setDetalle(this.visitaAdministrativa.getDetalle1());
						aCC.update(aCC.articulosConsumidos,articulosConsumidosService);
					}
					if(this.visitaAdministrativa.getIdArticulo2Str() != null && !this.visitaAdministrativa.getIdArticulo2Str().equals("")){
						aCC.articulosConsumidos.setId(new Long (this.visitaAdministrativa.getIdElemento2Str()));
						aCC.articulosConsumidos.setIdArticulo(new Long(this.visitaAdministrativa.getIdArticulo2Str()));
						aCC.articulosConsumidos.setCantidad(new Long(this.visitaAdministrativa.getCantidad2Str()));
						aCC.articulosConsumidos.setDetalle(this.visitaAdministrativa.getDetalle2());
						aCC.update(aCC.articulosConsumidos,articulosConsumidosService);
					}
					if(this.visitaAdministrativa.getIdArticulo3Str() != null && !this.visitaAdministrativa.getIdArticulo3Str().equals("")){
						aCC.articulosConsumidos.setId(new Long(this.visitaAdministrativa.getIdElemento3Str()));
						aCC.articulosConsumidos.setIdArticulo(new Long(this.visitaAdministrativa.getIdArticulo3Str()));
						aCC.articulosConsumidos.setCantidad(new Long(this.visitaAdministrativa.getCantidad3Str()));
						aCC.articulosConsumidos.setDetalle(this.visitaAdministrativa.getDetalle3());
						aCC.update(aCC.articulosConsumidos,articulosConsumidosService);
					}
					if(this.visitaAdministrativa.getIdArticulo4() != null && !this.visitaAdministrativa.getIdArticulo4().equals("")){
						aCC.articulosConsumidos.setId(new Long(this.visitaAdministrativa.getIdElemento4Str()));
						aCC.articulosConsumidos.setIdArticulo(new Long(this.visitaAdministrativa.getIdArticulo4Str()));
						aCC.articulosConsumidos.setCantidad(new Long(this.visitaAdministrativa.getCantidad4Str()));
						aCC.articulosConsumidos.setDetalle(this.visitaAdministrativa.getDetalle4());
						aCC.update(aCC.articulosConsumidos,articulosConsumidosService);
					}
				}				
				msg = AppConstants.SUCCESS_UPDATE;
			}
		} catch (VisitaAdministrativaException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		} catch (VisitaAdministrativaRuntimeException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage("- Visita Administrativa " + msg, null, null);
		return AppConstants.VISITA_ADMINISTRATIVA_SEARCH_VIEW;
	}
	
	/**
     * Carga en sesion la informacion de los parametros de busqueda y genera un
     * archivo con los registros consultados de solicitudes para exportar a
     * formato PDF.
     * 
     * @return La cadena que redirecciona a la pagina de visita administrativa.
     */
    public String generatePDFReport() {
    	
    	if (this.visitaAdministrativaListModel.getRowCount() > 0) {
    		Map params = getExternalContext().getRequestParameterMap();
    		String visitaAdministrativaDataIndex = (String) params.get("visitaAdministrativaReportIndex");
    		
    		this.visitaAdministrativa = (VisitaAdministrativa) ((List) this.visitaAdministrativaListModel
    				.getWrappedData()).get(Integer.parseInt(visitaAdministrativaDataIndex));
    		
    		try {
				this.visitaAdministrativaDTO =  this.getVisitaAdministrativaService()
						.getVisitAdminReport(this.visitaAdministrativa);
				
				reportCollection.add(this.visitaAdministrativaDTO);
			} catch (VisitaAdministrativaException e) {
				e.printStackTrace(System.err);
				
				((MessageModalWindowController) getBean(AppConstants.MESSAGE_CONTROLLER_BEAN))
					.setErrorMessage(AppConstants.DEFAULT_ERROR + e.getEndUserMessage(), null, null);
			}
    	}
    	
    	this.visitaAdministrativaDTO =  new VisitaAdministrativaDTO();
    	
		return AppConstants.VISITA_ADMINISTRATIVA_SEARCH_VIEW;
    }

	// --------------------------------------------------------------------
	// --- metodos para atender acciones end()
	// --------------------------------------------------------------------

	// --------------------------------------------------------------------
	// --- metodos para atender reglas de navegacion init()
	// --------------------------------------------------------------------

	/**
	 * 
	 */
	public String createVisitaAdministrativa() {
		Long idSolicitud = getVisitaAdministrativa().getIdSolicitud();
		String radicadoSolicitud = getVisitaAdministrativa().getRadicado();
		visitaAdministrativa = new VisitaAdministrativa();
		visitaAdministrativa.setId(new Long(0L));
		visitaAdministrativa.setIdSolicitud(idSolicitud);
		visitaAdministrativa.setRadicado(radicadoSolicitud);
		try {			
			List articulos = getArticuloService().loadMasterListItemsSupply();
			if(articulos != null && articulos.size() > 0){
				Iterator it = articulos.iterator();
				while (it.hasNext()) {
					Articulo articuloLocal = (Articulo) it.next();
					articuloSelectItems.add(new SelectItem(""+articuloLocal.getId(), articuloLocal.getCodigo() + " - " + articuloLocal.getDescripcion()));
				}
			}
		} catch (ArticuloException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//visitaAdministrativa.setValor("");
		//visitaAdministrativa.setActivo("N");
		return AppConstants.VISITA_ADMINISTRATIVA_CREATE_VIEW;
	}

	/**
	 * 
	 * @return
	 */
	public String updateVisitaAdministrativa() {
		Map params = getExternalContext().getRequestParameterMap();
		String visitaAdministrativaDataIndex = (String) params
				.get("visitaAdministrativaDataIndex");
		this.visitaAdministrativa = (VisitaAdministrativa) ((List) this.visitaAdministrativaListModel
				.getWrappedData())
				.get(Integer.parseInt(visitaAdministrativaDataIndex));
		String radicadoSolicitud = getVisitaAdministrativaSearch().getRadicado();
		visitaAdministrativa.setRadicado(radicadoSolicitud);
		try {
			List articulos = getArticuloService().loadMasterListItemsSupply();
			if(articulos != null && articulos.size() > 0){
				Iterator it = articulos.iterator();
				while (it.hasNext()) {
					Articulo articuloLocal = (Articulo) it.next();
					articuloSelectItems.add(new SelectItem(""+articuloLocal.getId(), articuloLocal.getCodigo() + " - " + articuloLocal.getDescripcion()));
				}
			}
		} catch (ArticuloException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return AppConstants.VISITA_ADMINISTRATIVA_UPDATE_VIEW;
	}

	/**
	 * 
	 * @return
	 */
	public String cancelVisitaAdministrativa() {
		return AppConstants.VISITA_ADMINISTRATIVA_SEARCH_VIEW;
	}

	
	public String cancelVisitaAdministrativaOpcion(){
		return getSolicitudDestinoRedirectPage();
	}

	// --------------------------------------------------------------------
	// --- metodos para atender reglas de navegacion end()
	// --------------------------------------------------------------------

	// --------------------------------------------------------------------
	// --- getters and setters init()
	// --------------------------------------------------------------------

	/**
	 * 
	 */
	public VisitaAdministrativa getVisitaAdministrativaSearch() {
		if(getSessionObject("SOLICITUD_ID_RADICADO") != null ){
			String radicado = (String) getSessionObject("SOLICITUD_ID_RADICADO");
			if(radicado != null){
				this.visitaAdministrativaSearch.setRadicado(radicado);
				this.visitaAdministrativa.setRadicado(radicado);
			}
		}
		if(getSessionObject("SOLICITUD_ID") != null ){
			Long solicitudId = (Long) getSessionObject("SOLICITUD_ID");
			if(solicitudId != null){
				this.visitaAdministrativaSearch.setIdSolicitud(solicitudId);
				this.visitaAdministrativa.setIdSolicitud(solicitudId);
			}
		}
		return visitaAdministrativaSearch;
	}

	/**
	 * Metodo que permite validar la direccion de la ubicacion de la visita, y obtener la URL
	 * de la imagen de catastro para geolocalizar dicha direccion.
	 * @return
	 */
	public String checkAddress() {
		direccionLocal = getGeoUbicacionClient().getAddressImageURL(this.visitaAdministrativa.getDireccionVisita());
		if(null == direccionLocal) {
			direccionLocal = new BeanDireccion();
		}
		visitaAdministrativa.setDireccionVisitaImageURL(OracleHelper.isNullorEmpty(direccionLocal.getURLImagen()) ? "IMAGEN_NO_DISPONIBLE" : direccionLocal.getURLImagen());
		
		return "";
	}

	/**
	 * 
	 * @param visitaAdministrativaSearch
	 */
	public void setvisitaAdministrativaSearch(VisitaAdministrativa visitaAdministrativaSearch) {
		this.visitaAdministrativaSearch = visitaAdministrativaSearch;
	}

	/**
	 * 
	 * @return
	 */
	public DataModel getvisitaAdministrativaListModel() {
		return visitaAdministrativaListModel;
	}

	/**
	 * 
	 * @param visitaAdministrativaListModel
	 */
	public void setvisitaAdministrativaListModel(DataModel visitaAdministrativaListModel) {
		this.visitaAdministrativaListModel = visitaAdministrativaListModel;
	}

	/**
	 * 
	 * @return
	 */
	public VisitaAdministrativa getVisitaAdministrativa() {
		return visitaAdministrativa;
	}

	/**
	 * 
	 * @param visitaAdministrativa
	 */
	public void setvisitaAdministrativa(VisitaAdministrativa visitaAdministrativa) {
		this.visitaAdministrativa = visitaAdministrativa;
	}

	/**
	 * obtencion del servicio visitaAdministrativaService
	 * 
	 * @return
	 */
	public IVisitaAdministrativaService getVisitaAdministrativaService() {
		return visitaAdministrativaService;
	}

	/**
	 * establecimiento del servicio visitaAdministrativaService, la inyeccion de la
	 * dependencia la cubre SpringFramework
	 * 
	 * @param visitaAdministrativaService
	 */
	public void setVisitaAdministrativaService(
			IVisitaAdministrativaService visitaAdministrativaService) {
		this.visitaAdministrativaService = visitaAdministrativaService;
	}

	public IArticulosConsumidosService getArticulosConsumidosService() {
		return articulosConsumidosService;
	}
	
	public void setArticulosConsumidosService(
			IArticulosConsumidosService articulosConsumidosService) {
		this.articulosConsumidosService = articulosConsumidosService;
	}

	/**
	 * Obtiene el parametro visitaAdministrativaDTO.
	 * @see VisitaAdministrativaController#visitaAdministrativaDTO
	 *
	 * @return El parametro visitaAdministrativaDTO.
	 */
	public VisitaAdministrativaDTO getVisitaAdministrativaDTO() {
		return visitaAdministrativaDTO;
	}

	/**
	 * Asigna el parametro visitaAdministrativaDTO.
	 * @see VisitaAdministrativaController#visitaAdministrativaDTO
	 *
	 * @param visitaAdministrativaDTO valor a asignar al parametro visitaAdministrativaDTO.
	 */
	public void setVisitaAdministrativaDTO(
			VisitaAdministrativaDTO visitaAdministrativaDTO) {
		this.visitaAdministrativaDTO = visitaAdministrativaDTO;
	}

	/**
	 * Obtiene el parametro reportCollection.
	 * @see VisitaAdministrativaController#reportCollection
	 *
	 * @return El parametro reportCollection.
	 */
	public Collection getReportCollection() {
		return reportCollection;
	}

	/**
	 * Asigna el parametro reportCollection.
	 * @see VisitaAdministrativaController#reportCollection
	 *
	 * @param reportCollection valor a asignar al parametro reportCollection.
	 */
	public void setReportCollection(Collection reportCollection) {
		this.reportCollection = reportCollection;
	}

	// --------------------------------------------------------------------
	// --- getters and setters end()
	// --------------------------------------------------------------------

	/**
	 * @return
	 */
	public GeoUbicacionClient getGeoUbicacionClient() {
		return geoUbicacionClient;
	}

	/**
	 * @param client
	 */
	public void setGeoUbicacionClient(GeoUbicacionClient client) {
		geoUbicacionClient = client;
	}

	public IArticuloService getArticuloService() {
		return articuloService;
	}

	public void setArticuloService(IArticuloService articuloService) {
		this.articuloService = articuloService;
	}

	public List getArticuloSelectItems() {
		return articuloSelectItems;
	}

	public void setArticuloSelectItems(List articuloSelectItems) {
		this.articuloSelectItems = articuloSelectItems;
	}

}
